CC = g++
CFLAGS = -g -I. -O2
LIST_DEPS = stack.h
VEC_DEPS = stack_vec.h
TEST = stack_test.cpp
TARGET_LIST_EXEC = stack_list_test
TARGET_VEC_EXEC = stack_vector_test
.DELETE_ON_ERROR:
all: $(TARGET_LIST_EXEC) $(TARGET_VEC_EXEC)

$(TARGET_LIST_EXEC): $(TEST) $(LIST_DEPS)
	$(CC) $(CFLAGS) -DUSE_LIST $< -o $@
	
$(TARGET_VEC_EXEC): $(TEST) $(VEC_DEPS)
	$(CC) $(CFLAGS) -DUSE_VEC $< -o $@

test_list: $(TARGET_LIST_EXEC)
	./$(TARGET_LIST_EXEC) $$(shuf -i 20-30 -n 1)

test_vector: $(TARGET_VEC_EXEC)
	./$(TARGET_VEC_EXEC) $$(shuf -i 20-30 -n 1)

.PHONY: clean

clean:
	rm -f *.gch $(TARGET_LIST_EXEC) $(TARGET_VEC_EXEC)
